<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Flow-IPC: ipc::transport::struc::shm Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Flow-IPC<span id="projectnumber">&#160;2.0.0</span>
   </div>
   <div id="projectbrief">Flow-IPC project: Full implementation reference.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceipc.html">ipc</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1transport.html">transport</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1transport_1_1struc.html">struc</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm.html">shm</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle"><div class="title">ipc::transport::struc::shm Namespace Reference</div></div>
</div><!--header-->
<div class="contents">

<p>Segregates zero-copy/SHM implementations of concepts residing in parent namespace <a class="el" href="namespaceipc_1_1transport_1_1struc.html" title="Sub-module of Flow-IPC module ipc::transport providing transmission of structured messages specifical...">ipc::transport::struc</a> proper &ndash; most notably the concepts <a class="el" href="classipc_1_1transport_1_1struc_1_1Struct__builder.html" title="A documentation-only concept defining the behavior of an object capable of zero-copy-serializing,...">ipc::transport::struc::Struct_builder</a> and <a class="el" href="classipc_1_1transport_1_1struc_1_1Struct__reader.html" title="A documentation-only concept that is, conceptually, roughly what capnp::MessageReader is to capnp::Me...">ipc::transport::struc::Struct_reader</a> &ndash; and items related to them.  
<a href="namespaceipc_1_1transport_1_1struc_1_1shm.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceipc_1_1transport_1_1struc_1_1shm_1_1arena__lend"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm_1_1arena__lend.html">arena_lend</a></td></tr>
<tr class="memdesc:namespaceipc_1_1transport_1_1struc_1_1shm_1_1arena__lend"><td class="mdescLeft">&#160;</td><td class="mdescRight">See parent <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm.html" title="Segregates zero-copy/SHM implementations of concepts residing in parent namespace ipc::transport::str...">ipc::transport::struc::shm</a> and at least sub-namespace <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm_1_1arena__lend_1_1jemalloc.html" title="As of this writing certain convenience aliases supplied for the SHM-jemalloc SHM-provider as pertains...">ipc::transport::struc::shm::arena_lend::jemalloc</a>. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespaceipc_1_1transport_1_1struc_1_1shm_1_1classic"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm_1_1classic.html">classic</a></td></tr>
<tr class="memdesc:namespaceipc_1_1transport_1_1struc_1_1shm_1_1classic"><td class="mdescLeft">&#160;</td><td class="mdescRight">As of this writing certain convenience aliases supplied for the SHM-classic SHM-provider as pertains to zero-copy structured message passing with that SHM-provider. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespaceipc_1_1transport_1_1struc_1_1shm_1_1error"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm_1_1error.html">error</a></td></tr>
<tr class="memdesc:namespaceipc_1_1transport_1_1struc_1_1shm_1_1error"><td class="mdescLeft">&#160;</td><td class="mdescRight">Analogous to <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1error.html" title="Analogous to ipc::transport::error but applies to the sub-namespace ipc::transport::struc – errors ha...">ipc::transport::struc::error</a> but applies to the sub-namespace <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm.html" title="Segregates zero-copy/SHM implementations of concepts residing in parent namespace ipc::transport::str...">ipc::transport::struc::shm</a> &ndash; errors having to do with structured messaging with zero-copy backed by SHM. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html">Builder</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1struc_1_1Struct__builder.html" title="A documentation-only concept defining the behavior of an object capable of zero-copy-serializing,...">Struct_builder</a> concept with maximal zero-copy perf by (1) storing the actual user-schema-controlled message using the SHM provider of choice, in SHM, and (2) straightforwardly allocating 1 segment in regular heap and placing the SHM handle there for transmission over IPC.  <a href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder__base.html">Builder_base</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html" title="Implements Struct_builder concept with maximal zero-copy perf by (1) storing the actual user-schema-c...">shm::Builder</a> base that contains non-parameterized <code>public</code> items such as tag types and constants.  <a href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder__base.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Capnp__message__builder.html">Capnp_message_builder</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <code>capnp::MessageBuilder</code> used by <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html" title="Implements Struct_builder concept with maximal zero-copy perf by (1) storing the actual user-schema-c...">shm::Builder</a>: similar to a <code>MallocMessageBuilder</code> with the <code>GROW_HEURISTICALLY</code> alloc-strategy but allocating via a SHM provider (of template-arg-specific type) in SHM instead of the heap via <code>malloc()</code>.  <a href="classipc_1_1transport_1_1struc_1_1shm_1_1Capnp__message__builder.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Reader.html">Reader</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1struc_1_1Struct__reader.html" title="A documentation-only concept that is, conceptually, roughly what capnp::MessageReader is to capnp::Me...">Struct_reader</a> concept by interpreting a serialization by <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html" title="Implements Struct_builder concept with maximal zero-copy perf by (1) storing the actual user-schema-c...">shm::Builder</a> with the same template params.  <a href="classipc_1_1transport_1_1struc_1_1shm_1_1Reader.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ac4969b49016844f884240b81ee1ab180"><td class="memTemplParams" colspan="2">template&lt;typename Shm_arena &gt; </td></tr>
<tr class="memitem:ac4969b49016844f884240b81ee1ab180"><td class="memTemplItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm.html#ac4969b49016844f884240b81ee1ab180">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Capnp__message__builder.html">Capnp_message_builder</a>&lt; Shm_arena &gt; &amp;val)</td></tr>
<tr class="memdesc:ac4969b49016844f884240b81ee1ab180"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Capnp__message__builder.html" title="A capnp::MessageBuilder used by shm::Builder: similar to a MallocMessageBuilder with the GROW_HEURIST...">Capnp_message_builder</a></code> to the given <code>ostream</code>.  <a href="namespaceipc_1_1transport_1_1struc_1_1shm.html#ac4969b49016844f884240b81ee1ab180">More...</a><br /></td></tr>
<tr class="separator:ac4969b49016844f884240b81ee1ab180"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a705eab4975089bdd7c6d961b079a2252"><td class="memTemplParams" colspan="2">template&lt;typename Shm_arena &gt; </td></tr>
<tr class="memitem:a705eab4975089bdd7c6d961b079a2252"><td class="memTemplItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm.html#a705eab4975089bdd7c6d961b079a2252">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html">Builder</a>&lt; Shm_arena &gt; &amp;val)</td></tr>
<tr class="memdesc:a705eab4975089bdd7c6d961b079a2252"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html" title="Implements Struct_builder concept with maximal zero-copy perf by (1) storing the actual user-schema-c...">Builder</a></code> to the given <code>ostream</code>.  <a href="namespaceipc_1_1transport_1_1struc_1_1shm.html#a705eab4975089bdd7c6d961b079a2252">More...</a><br /></td></tr>
<tr class="separator:a705eab4975089bdd7c6d961b079a2252"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6aed71b2ab83f2a087d66562ea2962b9"><td class="memTemplParams" colspan="2">template&lt;typename Shm_arena &gt; </td></tr>
<tr class="memitem:a6aed71b2ab83f2a087d66562ea2962b9"><td class="memTemplItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm.html#a6aed71b2ab83f2a087d66562ea2962b9">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Reader.html">Reader</a>&lt; Shm_arena &gt; &amp;val)</td></tr>
<tr class="memdesc:a6aed71b2ab83f2a087d66562ea2962b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Reader.html" title="Implements Struct_reader concept by interpreting a serialization by shm::Builder with the same templa...">Reader</a></code> to the given <code>ostream</code>.  <a href="namespaceipc_1_1transport_1_1struc_1_1shm.html#a6aed71b2ab83f2a087d66562ea2962b9">More...</a><br /></td></tr>
<tr class="separator:a6aed71b2ab83f2a087d66562ea2962b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab592ce6eddbe24c57dc71f34018fb042"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm.html#ab592ce6eddbe24c57dc71f34018fb042">capnp_set_lent_shm_handle</a> (schema::ShmHandle::Builder *shm_handle_root, const flow::util::Blob_sans_log_context &amp;lend_result)</td></tr>
<tr class="memdesc:ab592ce6eddbe24c57dc71f34018fb042"><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility that saves the result of a <code>Shm_session1::lend_object&lt;T&gt;(const shared_ptr&lt;T&gt;&amp;)</code> result into the given capnp-generated <code>ShmHandle</code>-typed field.  <a href="namespaceipc_1_1transport_1_1struc_1_1shm.html#ab592ce6eddbe24c57dc71f34018fb042">More...</a><br /></td></tr>
<tr class="separator:ab592ce6eddbe24c57dc71f34018fb042"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb38fe88cfd5e758ef52c482d2902669"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm.html#adb38fe88cfd5e758ef52c482d2902669">capnp_get_shm_handle_to_borrow</a> (const schema::ShmHandle::Reader &amp;shm_handle_root, flow::util::Blob_sans_log_context *arg_to_borrow)</td></tr>
<tr class="memdesc:adb38fe88cfd5e758ef52c482d2902669"><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility that's the reverse of <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm.html#ab592ce6eddbe24c57dc71f34018fb042" title="Utility that saves the result of a Shm_session1::lend_object&lt;T&gt;(const shared_ptr&lt;T&gt;&amp;) result into the...">capnp_set_lent_shm_handle()</a> to be invoked on the deserializing side.  <a href="namespaceipc_1_1transport_1_1struc_1_1shm.html#adb38fe88cfd5e758ef52c482d2902669">More...</a><br /></td></tr>
<tr class="separator:adb38fe88cfd5e758ef52c482d2902669"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >Segregates zero-copy/SHM implementations of concepts residing in parent namespace <a class="el" href="namespaceipc_1_1transport_1_1struc.html" title="Sub-module of Flow-IPC module ipc::transport providing transmission of structured messages specifical...">ipc::transport::struc</a> proper &ndash; most notably the concepts <a class="el" href="classipc_1_1transport_1_1struc_1_1Struct__builder.html" title="A documentation-only concept defining the behavior of an object capable of zero-copy-serializing,...">ipc::transport::struc::Struct_builder</a> and <a class="el" href="classipc_1_1transport_1_1struc_1_1Struct__reader.html" title="A documentation-only concept that is, conceptually, roughly what capnp::MessageReader is to capnp::Me...">ipc::transport::struc::Struct_reader</a> &ndash; and items related to them. </p>
<p >This namespace proper is focused on <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html" title="Implements Struct_builder concept with maximal zero-copy perf by (1) storing the actual user-schema-c...">struc::shm::Builder</a> and <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Reader.html" title="Implements Struct_reader concept by interpreting a serialization by shm::Builder with the same templa...">struc::shm::Reader</a>, templates which enable (in a SHM-provider-parameterized way) zero-copyable structured messages by implementing the aforementioned pair of concepts respectively.</p>
<p >Sub-namespaces, including <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm_1_1classic.html" title="As of this writing certain convenience aliases supplied for the SHM-classic SHM-provider as pertains ...">struc::shm::classic</a> and <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm_1_1arena__lend_1_1jemalloc.html" title="As of this writing certain convenience aliases supplied for the SHM-jemalloc SHM-provider as pertains...">struc::shm::arena_lend::jemalloc</a> as of this writing, pertain to SHM-provider-specific items relevant (at least) to that pair of templates (<code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html" title="Implements Struct_builder concept with maximal zero-copy perf by (1) storing the actual user-schema-c...">Builder</a></code> and <code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Reader.html" title="Implements Struct_reader concept by interpreting a serialization by shm::Builder with the same templa...">Reader</a></code>). In particular, e.g., <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm_1_1classic.html#abfde278018c84aa1542475e9a4089c29" title="Convenience alias: transport::struc::shm::Builder that works with boost.ipc.shm pools from ipc::shm::...">struc::shm::classic::Builder</a> is the concrete type that implements a zero-copy <code><a class="el" href="classipc_1_1transport_1_1struc_1_1Struct__builder.html" title="A documentation-only concept defining the behavior of an object capable of zero-copy-serializing,...">Struct_builder</a></code> using the <a class="el" href="namespaceipc_1_1shm_1_1classic.html" title="ipc::shm sub-module with the SHM-classic SHM-provider. See ipc::shm doc header for introduction.">ipc::shm::classic</a> SHM-provider (and similarly for <code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Reader.html" title="Implements Struct_reader concept by interpreting a serialization by shm::Builder with the same templa...">Reader</a></code>). For user convenience and generic coding ease, each SHM-provider shall provide that pair of aliases (<code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html" title="Implements Struct_builder concept with maximal zero-copy perf by (1) storing the actual user-schema-c...">Builder</a></code> and <code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Reader.html" title="Implements Struct_reader concept by interpreting a serialization by shm::Builder with the same templa...">Reader</a></code>) in a sub-namespace in some reasonable way mirroring the SHM-provider core's namespace path. (Hence note that SHM-classic provider core is in <a class="el" href="namespaceipc_1_1shm_1_1classic.html" title="ipc::shm sub-module with the SHM-classic SHM-provider. See ipc::shm doc header for introduction.">ipc::shm::classic</a>, hence the <code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html" title="Implements Struct_builder concept with maximal zero-copy perf by (1) storing the actual user-schema-c...">Builder</a></code> and <code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Reader.html" title="Implements Struct_reader concept by interpreting a serialization by shm::Builder with the same templa...">Reader</a></code> aliases are in <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm_1_1classic.html" title="As of this writing certain convenience aliases supplied for the SHM-classic SHM-provider as pertains ...">ipc::transport::struc::shm::classic</a> accordingly.)</p>
<p >(If that didn't read like some sort of comprehensible English, you probably need not worry about it. In particular if you use <a class="el" href="namespaceipc_1_1session.html" title="Flow-IPC module providing the broad lifecycle and shared-resource organization – via the session conc...">ipc::session</a> to set up your IPC, you'll have access to higher-level aliases to make it all simple &ndash; while internally they'll most likely use the stuff in the preceding paragraph. E.g., <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__mv.html#a96f6b597be7cc29f9207df909a4816c4" title="Implements Session API per contract.">ipc::session::shm::classic::Session_mv::Structured_channel</a> is your guy... no <code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html" title="Implements Struct_builder concept with maximal zero-copy perf by (1) storing the actual user-schema-c...">Builder</a></code>s or <code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Reader.html" title="Implements Struct_reader concept by interpreting a serialization by shm::Builder with the same templa...">Reader</a></code>s in sight about which you would need to worry.) </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="adb38fe88cfd5e758ef52c482d2902669" name="adb38fe88cfd5e758ef52c482d2902669"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb38fe88cfd5e758ef52c482d2902669">&#9670;&nbsp;</a></span>capnp_get_shm_handle_to_borrow()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ipc::transport::struc::shm::capnp_get_shm_handle_to_borrow </td>
          <td>(</td>
          <td class="paramtype">const schema::ShmHandle::Reader &amp;&#160;</td>
          <td class="paramname"><em>shm_handle_root</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">flow::util::Blob_sans_log_context *&#160;</td>
          <td class="paramname"><em>arg_to_borrow</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Utility that's the reverse of <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm.html#ab592ce6eddbe24c57dc71f34018fb042" title="Utility that saves the result of a Shm_session1::lend_object&lt;T&gt;(const shared_ptr&lt;T&gt;&amp;) result into the...">capnp_set_lent_shm_handle()</a> to be invoked on the deserializing side. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">shm_handle_root</td><td><code>ShmHandle</code> reader to access. Behavior undefined if was not set by <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm.html#ab592ce6eddbe24c57dc71f34018fb042" title="Utility that saves the result of a Shm_session1::lend_object&lt;T&gt;(const shared_ptr&lt;T&gt;&amp;) result into the...">capnp_set_lent_shm_handle()</a>. </td></tr>
    <tr><td class="paramname">arg_to_borrow</td><td>Shall be set to what to pass to <code>borrow_object&lt;T&gt;()</code> (non-null pointer or behavior undefined/assertion may trip). <code>arg_to_borrow-&gt;get_logger()</code> shall not be modified; so set it to what you want, if you want. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm_2src_2ipc_2transport_2struc_2shm_2util_8cpp_source.html#l00051">51</a> of file <a class="el" href="ipc__shm_2src_2ipc_2transport_2struc_2shm_2util_8cpp_source.html">util.cpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="ipc__shm_2src_2ipc_2transport_2struc_2shm_2serializer_8hpp_source.html#l00681">ipc::transport::struc::shm::Reader&lt; Shm_arena &gt;::deserialization()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="namespaceipc_1_1transport_1_1struc_1_1shm_adb38fe88cfd5e758ef52c482d2902669_icgraph.svg" width="395" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="ab592ce6eddbe24c57dc71f34018fb042" name="ab592ce6eddbe24c57dc71f34018fb042"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab592ce6eddbe24c57dc71f34018fb042">&#9670;&nbsp;</a></span>capnp_set_lent_shm_handle()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ipc::transport::struc::shm::capnp_set_lent_shm_handle </td>
          <td>(</td>
          <td class="paramtype">schema::ShmHandle::Builder *&#160;</td>
          <td class="paramname"><em>shm_handle_root</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const flow::util::Blob_sans_log_context &amp;&#160;</td>
          <td class="paramname"><em>lend_result</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Utility that saves the result of a <code>Shm_session1::lend_object&lt;T&gt;(const shared_ptr&lt;T&gt;&amp;)</code> result into the given capnp-generated <code>ShmHandle</code>-typed field. </p>
<p >On the deserializing end, one can get back this value via <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm.html#adb38fe88cfd5e758ef52c482d2902669" title="Utility that&#39;s the reverse of capnp_set_lent_shm_handle() to be invoked on the deserializing side.">capnp_get_shm_handle_to_borrow()</a> and pass it to <code>Shm_session2::borrow_object&lt;T&gt;()</code> to yield a <code>shared_ptr&lt;T&gt;</code> equivalent to the original passed to <code>lend_object()</code>.</p>
<p ><code>Shm_session1</code> and <code>Shm_session2</code> supported, respectively, include:</p><ul>
<li><a class="el" href="classipc_1_1shm_1_1classic_1_1Pool__arena.html" title="A SHM-classic interface around a single SHM pool with allocation-algorithm services by boost....">shm::classic::Pool_arena</a>, <a class="el" href="classipc_1_1shm_1_1classic_1_1Pool__arena.html" title="A SHM-classic interface around a single SHM pool with allocation-algorithm services by boost....">shm::classic::Pool_arena</a> (sic);</li>
<li>shm::arena_lend::jemalloc::Shm_session, shm::arena_lend::jemalloc::Shm_session (sic);</li>
<li><a class="el" href="namespaceipc_1_1session_1_1shm_1_1classic.html#ac6c443a72e0f22710c83bb1e8c229618" title="This is to session::Client_session what shm::classic::Server_session is to session::Server_session.">session::shm::classic::Client_session</a>, <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">session::shm::classic::Server_session</a>;<ul>
<li>vice versa;</li>
</ul>
</li>
<li><a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">session::shm::arena_lend::jemalloc::Client_session</a>, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">session::shm::arena_lend::jemalloc::Server_session</a>;<ul>
<li>vice versa;</li>
</ul>
</li>
<li><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html#a2d9808d9b0c04cf84c8e439b1643506d" title="Implements concept API.">shm::Builder::Session</a> pointee, <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Reader.html#ae77502abf0b04ad7543266fc6c34f49d" title="See shm::Builder::Session.">shm::Reader::Session</a> pointee.</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">shm_handle_root</td><td>Non-null (or behavior undefined/assertion may trip) pointer to <code>ShmHandle</code> builder to mutate. </td></tr>
    <tr><td class="paramname">lend_result</td><td>What <code>lend_object&lt;T&gt;()</code> returned. Not <code>.empty()</code>, or behavior undefined (assertion may trip). Reminder: if that returned <code>.empty()</code>, the session is likely hosed, and you cannot transmit SHM objects between the two endpoints, so there is no point in calling us. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm_2src_2ipc_2transport_2struc_2shm_2util_8cpp_source.html#l00028">28</a> of file <a class="el" href="ipc__shm_2src_2ipc_2transport_2struc_2shm_2util_8cpp_source.html">util.cpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="capnp__msg__builder_8hpp_source.html#l00265">ipc::transport::struc::shm::Capnp_message_builder&lt; Shm_arena &gt;::lend()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="namespaceipc_1_1transport_1_1struc_1_1shm_ab592ce6eddbe24c57dc71f34018fb042_icgraph.svg" width="352" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a705eab4975089bdd7c6d961b079a2252" name="a705eab4975089bdd7c6d961b079a2252"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a705eab4975089bdd7c6d961b079a2252">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Shm_arena &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html">Builder</a>&lt; Shm_arena &gt; &amp;&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Prints string representation of the given <code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html" title="Implements Struct_builder concept with maximal zero-copy perf by (1) storing the actual user-schema-c...">Builder</a></code> to the given <code>ostream</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to write. </td></tr>
    <tr><td class="paramname">val</td><td>Object to serialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>os</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm_2src_2ipc_2transport_2struc_2shm_2serializer_8hpp_source.html#l00643">643</a> of file <a class="el" href="ipc__shm_2src_2ipc_2transport_2struc_2shm_2serializer_8hpp_source.html">serializer.hpp</a>.</p>

</div>
</div>
<a id="ac4969b49016844f884240b81ee1ab180" name="ac4969b49016844f884240b81ee1ab180"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac4969b49016844f884240b81ee1ab180">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Shm_arena &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Capnp__message__builder.html">Capnp_message_builder</a>&lt; Shm_arena &gt; &amp;&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Prints string representation of the given <code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Capnp__message__builder.html" title="A capnp::MessageBuilder used by shm::Builder: similar to a MallocMessageBuilder with the GROW_HEURIST...">Capnp_message_builder</a></code> to the given <code>ostream</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to write. </td></tr>
    <tr><td class="paramname">val</td><td>Object to serialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>os</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="capnp__msg__builder_8hpp_source.html#l00444">444</a> of file <a class="el" href="capnp__msg__builder_8hpp_source.html">capnp_msg_builder.hpp</a>.</p>

</div>
</div>
<a id="a6aed71b2ab83f2a087d66562ea2962b9" name="a6aed71b2ab83f2a087d66562ea2962b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6aed71b2ab83f2a087d66562ea2962b9">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Shm_arena &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Reader.html">Reader</a>&lt; Shm_arena &gt; &amp;&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Prints string representation of the given <code><a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Reader.html" title="Implements Struct_reader concept by interpreting a serialization by shm::Builder with the same templa...">Reader</a></code> to the given <code>ostream</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to write. </td></tr>
    <tr><td class="paramname">val</td><td>Object to serialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>os</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm_2src_2ipc_2transport_2struc_2shm_2serializer_8hpp_source.html#l00860">860</a> of file <a class="el" href="ipc__shm_2src_2ipc_2transport_2struc_2shm_2serializer_8hpp_source.html">serializer.hpp</a>.</p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 11 2025 20:02:27 for Flow-IPC by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
</small></address>
</body>
</html>
